package com.erp.erp_dao.Billing;

import com.erp.erp_entitys.Billing.entity.BillingDetailEntity;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author zjk
 * @version 1.0
 * @description
 * @date 2021/1/16/016 3:48
 */
public interface BillingDetailDao {
    int deleteByPrimaryKey(@Param("ids") List<Integer> ids);

    int insert(BillingDetailEntity record);

    /**
     * 添加开票明细
     * @param record
     * @return
     */
    Integer insertBillingDetailEntity(BillingDetailEntity record);

    /**
     * 根据开票id查询开票明细集合
     * @param billingId
     * @return
     */
    List<BillingDetailEntity> selectByBillingDetailBillingId(Integer billingId);
    /**
     *根据开票明细id集合修改状态
     *
     * @param valid
     * @param ids
     * @return
     */
    Integer updateBillingDetailInvalid(@Param("valid") Integer valid, @Param("ids") List<Integer> ids);
    /**
     *根据开票主表id修改状态
     *
     * @param valid
     * @param ids
     * @return
     */
    Integer updateBillingDetailInvalidByBillingId(@Param("valid")Integer valid,@Param("ids") Integer[] ids);
    /**
     * 根据开票主ID查询开票明细
     * @param id
     * @return
     */
    List<BillingDetailEntity> selectByBillingId(Integer billingId);

    /**
     * 修改开票明细
     * @param record
     * @return
     */
    int updateByBillingDetail(BillingDetailEntity record);

    int updateByPrimaryKey(BillingDetailEntity record);


    /**
     * 根据条件查询开票明细
     * @param purchaseOrderCode 采购单号
     * @param productCode 产品编码
     * @param specificationCode 规格编码
     * @return
     */
    Integer findBillingDetailByParam(@Param("sourceType") Integer sourceType,
                                     @Param("invoiceType") Integer invoiceType,
                                     @Param("exportContractNo") String exportContractNo,
                                     @Param("purchaseOrderCode") String purchaseOrderCode,
                                     @Param("productCode") String productCode);

    /**
     * 根据条件查询开票明细--结汇
     * @return
     */
    Integer findBillingDetailByParamBillExchange(@Param("exportContractNo") String contractNo,
                                     @Param("invoiceNo") String invoiceNo,
                                     @Param("productCode") String productCode);

}
